package ModelAndController;
/*
 * A kijelző hálózati elemet megvalósító osztály. 
 * Az egyetlen bemenetén észlelt logikai értéket jeleníti meg, 1/0 formában.
 */
//Exception 240 es 259 kozott
public class Display extends Element{
	//A kijelző állapotát tárolja.
	private int state;
	//konstruktor
	public Display(){
		state = -1;
	}
	/*
	 * Az elem belső állapotának változását végzi a bemenetek értékének függvényében. 
	 * Ha az adott elem változott, akkor azt jelzi a visszatérési értéken.
	 */
	public boolean isUpdateSuccess(){
		boolean retValue = false;
		
		if(shouldUpdate){
			retValue = actualUpdate();
			shouldUpdate = false;
		}
		
		buffer = Integer.toString( state );
		return retValue;
	}
	//Kiszámolja,hogy a bemenetek alapján milyen állapotot kell felvennie és 
	//ha az állapota ezzel változik,akkor meghívja a megfelelő függvényt
	private boolean actualUpdate(){
		boolean retValue = false;
		int newState = inputWires[0].getState();
		
		if(newState != state){
			state = newState;
						
			retValue = true;
		}
		return retValue;
	}
	/*
	 * Az elem belső állapotának értékét adja vissza.
	 */
	public int getState(int nbOfOutput){
		return state;
	}
	//Az elem bemeneteinek számát állítja be
	public void setInputWireNumbers(int nbOfInputWires){
		if( 0<nbOfInputWires )
			inputWires = new Wire[ 1 ];
	}
	//Az aktuális bemenetet állítja be
	public void setActualInputWire(int nbOfWire,Wire act){
		if( inputWires != null ) 
			if( nbOfWire == 0 )
				inputWires[ 0 ] = act;
	}
	//A display nem rendelkezik kimenettel,hibát dob
	public void setOutputNumbers(int nbOfOutput) throws Exception{
		if(nbOfOutput != 0)
			throw new Exception("240");
	}
	//A display nem rendelkezik kimenettel,hibát dob
	public void setOutputWireNumbers(int actOutput, int nbOfOutputWires) throws Exception{
		throw new Exception("240");	
	}
	//A display nem rendelkezik kimenettel,hibát dob
	public void setActualOutputWire(int actOutput, int nbOfWire, Wire act) throws Exception{
		throw new Exception("240");
	}
}
